5943. 删除链表的中间节点
https://leetcode-cn.com/problems/delete-the-middle-node-of-a-linked-list/
- 提交时间:2021-12-05 04:18:10
- 执行用时:260 ms, 在所有 Go 提交中击败了100.00%的用户
- 内存消耗:9.5 MB, 在所有 Go 提交中击败了100.00%的用户
- 通过测试用例:70 / 70
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func deleteMiddle(head *ListNode) *ListNode {
nodeLen := 1
nodeHead := head
nodeNow := head
for {
if nodeNow.Next == nil {
break
}
nodeNow = nodeNow.Next
nodeLen++
}
if nodeLen == 1 {
return nil
}
nodeMid := nodeLen >> 1
nodeNow = head
lastNode := head
nodePos := 0
for {
if nodePos == nodeMid {
lastNode.Next = nodeNow.Next
break
}
lastNode = nodeNow
nodeNow = nodeNow.Next
nodePos++
}
return nodeHead
}